home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / boot / netBoot.new / sun4c.md / old / buserr.h < prev    next >
C/C++ Source or Header  |  1990-12-19  |  4KB  |  121 lines

  1.  
  2. /*    @(#)buserr.h 1.3 88/02/08 SMI    */
  3.  
  4. /*
  5.  * Copyright (c) 1986 by Sun Microsystems, Inc.
  6.  */
  7.  
  8. /*
  9.  * buserr.h
  10.  *
  11.  * definitions for stacked structure showing details of Bus Error
  12.  * or Address Error on M68010 or M68020.
  13.  */
  14.  
  15. #ifndef fvo_form
  16.  
  17. /*
  18.  * All the possible values of the Format/Vector Offset format nibble.
  19.  *
  20.  * By definition, not all of these will occur on a single processor chip.
  21.  * The 68020 uses all but the bus10 (68010 bus error) format though.
  22.  */
  23. enum fvo_format {
  24.     fvo_format_short    = 0,
  25.     fvo_format_throwaway    = 1,
  26.     fvo_format_sixword    = 2,
  27.     fvo_format_bus10    = 8,
  28.     fvo_format_coproc    = 9,
  29.     fvo_format_bus20short    = 0xA,
  30.     fvo_format_bus20long    = 0xB,
  31. };
  32.  
  33. /* 
  34.  * The Format/Vector Offset word appears in all stack frames.
  35.  */
  36. union fvo {
  37.     unsigned short fvo;
  38.     struct {
  39.         enum fvo_format    fvo_p_format:4;
  40.         unsigned short    fvo_p_offset:12;
  41.     } fvo_parts;
  42. };
  43. #define    fvo_form    fvo_parts.fvo_p_format
  44. #define    fvo_off        fvo_parts.fvo_p_offset
  45.  
  46. /*
  47.  * In the 68010, the BusErrInfo structure starts at the stack pointer upon
  48.  * entry to the bus error routine and proceeds up the stack.  The info described
  49.  * herein will automatically be popped off the stack by the RTE instruction.
  50.  */
  51. struct buserr_stack_10 {
  52.     unsigned short    be10_sr;
  53.     unsigned long    be10_pc;
  54.     union fvo     be10_fvo;
  55.     unsigned char    be10_ssw_rr:1;    /* Rerun? (0=yes, 1=done by s/ware) */
  56.     unsigned char        :1;
  57.     unsigned char    be10_ssw_if:1;    /* Access was ifetch to IRC. */
  58.     unsigned char    be10_ssw_df:1;    /* Access was data fetch to DIB. */
  59.     unsigned char    be10_ssw_rm:1;    /* Access was read-modify-write */
  60.     unsigned char    be10_ssw_hb:1;    /* High byte=1, low byte=0, iff BY */
  61.     unsigned char    be10_ssw_by:1;    /* Byte.  1=byte, 0=word xfer. */
  62.     unsigned char    be10_ssw_rw:1;    /* Read/Write, 0=Write 1=Read. */
  63.     unsigned char        :5;
  64.     unsigned char    be10_ssw_fcode:3; /* Function codes from access. */
  65.     unsigned long    be10_aob;    /* Address out buffer: failing addr */
  66.     unsigned short    be10_reg_e;
  67.     unsigned short    be10_dob;    /* Data output buffer */
  68.     unsigned short    be10_reg_12;
  69.     unsigned short    be10_dib;    /* Data input buffer */
  70.     unsigned short    be10_reg_16;
  71.     unsigned short    be10_irc;    /* Instruction register */
  72.     unsigned short    be10_upc;    /* Micro program counter */
  73.     unsigned short    be10_reg_1c[15];
  74. };
  75.  
  76. /*
  77.  * The 68020 generates two kinds of bus error frames, short (between
  78.  * instructions) and long (mid instruction).  Both use the same Special
  79.  * Status Word format and location.  The field names are taken from the
  80.  * 68020 User's Manual, section 6.4.1.
  81.  */
  82. struct ssw20 {
  83.     unsigned char    ssw20_fc:1;    /* Fault on stage C of instr pipe */
  84.     unsigned char    ssw20_fb:1;    /* Fault on stage B of instr pipe */
  85.     unsigned char    ssw20_rc:1;    /* Rerun    stage C of instr pipe */
  86.     unsigned char    ssw20_rb:1;    /* Rerun    stage B of instr pipe */
  87.     unsigned char    :3;
  88.     unsigned char    ssw20_df:1;    /* Fault/Rerun of data cycle */
  89.     unsigned char    ssw20_rm:1;    /* Read-Modify-Write data cycle */
  90.     unsigned char    ssw20_rw:1;    /* Read=1, write=0 data cycle */
  91.     unsigned char    ssw20_siz:2;    /* Size code for data cycle */
  92.     unsigned char    :1;
  93.     unsigned char    ssw20_fcode:3;    /* Function code for data cycle */
  94. };
  95.  
  96.  
  97. struct buserr_stack_20_common {
  98.     unsigned short    be20_sr;
  99.     unsigned long    be20_pc;
  100.     union fvo    be20_fvo;
  101.     unsigned short    be20_reg_8[1];
  102.     struct ssw20    be20_ssw;
  103.     unsigned short    be20_instr_pipe_stage_c;
  104.     unsigned short    be20_instr_pipe_stage_b;
  105.     unsigned long    be20_data_fault_addr;
  106.     unsigned short    be20_reg_14[2];
  107.     unsigned long    be20_data_output_buf;
  108.     unsigned short    be20_reg_1c[2];
  109. };
  110.  
  111.  
  112. struct buserr_stack_20_extension {
  113.     unsigned short    be20_reg_20[2];
  114.     unsigned long    be20_stage_b_addr;
  115.     unsigned short    be20_reg_28[2];
  116.     unsigned long    be20_data_input_buf;
  117.     unsigned short    be20_reg_30[22];
  118. };
  119.  
  120. #endif fvo_form
  121.